package com.project.srtp.secure.service;


import com.project.srtp.secure.dto.req.SecureFileReqDTO;
import com.project.srtp.secure.dto.resp.SecureFileRespDTO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author 曹行阳
 * @version 0.1
 * @date 2025/6/10 16:54
 * SecureService：定义加密文件上传和下载接口
 */
public interface SecureService {

    /**
     * 上传并加密文件
     * @param request 包含 MultipartFile 及 ownerId
     * @return SecureFileRespDTO 返回文件相关信息（包括生成的 fileId 等）
     * @throws Exception 加密或存储中出现异常
     */
    SecureFileRespDTO uploadAndEncrypt(SecureFileReqDTO request) throws Exception;

    /**
     * 下载并解密文件
     * @param fileId 加密文件 ID
     * @param ownerId 请求下载者用户 ID
     * @param response HttpServletResponse，用于直接写出文件流
     * @throws Exception 解密或读取中出现异常
     */
    void downloadAndDecrypt(Long fileId, String ownerId, HttpServletResponse response) throws Exception;

    List<SecureFileRespDTO> listFile();

    void deleteFile(Long fileId);
}
